/////precompiled////////
#include "precompiled.h"
////////////////////////

#include "prs_DataRegTables.h"
using namespace prs;

// TDataRegTablesRecord ///////////////////////////////////////////////////////

//
TDataRegTablesRecord::TDataRegTablesRecord(
	TDataRegTables &DataRegTables
):dataRegTables(DataRegTables) {
	record = NULL;
}

//
TDataRegTablesRecord::TDataRegTablesRecord(
  TDataRegTablesRecord &DataRegTablesRecord
):dataRegTables(DataRegTablesRecord.dataRegTables) {
 *this = DataRegTablesRecord;
}

//
TTableId TDataRegTablesRecord::GetTableId() const { 
  return dataRegTables.table->TableId;
}

//
TDataRegTablesRecord &TDataRegTablesRecord::SetValueTableId(const TTableId &Value) {
	record->SetValueString(dataRegTables.tableIdFieldId,Value.GetId());
	return *this;
}

//
TTableId TDataRegTablesRecord::GetValueTableId() {
	return record->GetValueString(dataRegTables.tableIdFieldId)->GetValue();
}

// TDataRegTables /////////////////////////////////////////////////////////////

//
TDataRegTables::TDataRegTables(
  TDataTables &Tables,
  const TTableId &TableId
)
:tables(Tables)
{
	tableIdFieldId = "tableId";

	table = tables.GetTable(TableId);
	if (!table)	{
    table = tables.AddTable(TableId);
    table->AddFieldString(tableIdFieldId);
	}
}

//
TDataRegTablesRecord TDataRegTables::AddRecord() {
  TDataRegTablesRecord R(*this);
		R.record = table->AddRecord();
	return R;	
}

//
TDataRegTablesRecord TDataRegTables::GetRecord(
	const TRecordId &RecordId
){
  TDataRegTablesRecord R(*this);
		R.record = table->GetRecord(RecordId);
	return R;	
}
